package es.mjcotan.restfulcxfsprexample.entities;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlType(
        name = "EmpleadoType",
        namespace = "es.mjcotan.restfulcxfsprexample.entities",
        propOrder = {"iden", "nombre", "apellidos"})
@XmlRootElement(
        name = "Empleado",
        namespace = "es.mjcotan.restfulcxfsprexample.entities")
public class Empleado implements Serializable, Cloneable {

	private static final long serialVersionUID = 1L;
	
	
	private Long iden;
	private String nombre;
	private String apellidos;
	
	public Empleado() {
		super();
	}
	
	public Empleado(Long iden, String nombre, String apellidos) {
		this();
		this.iden = iden;
		this.nombre = nombre;
		this.apellidos = apellidos;
	}



	public Long getIden() {
		return iden;
	}
	public void setIden(Long iden) {
		this.iden = iden;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellidos() {
		return apellidos;
	}
	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}
	
	public boolean equals(Object o) {
        boolean areEquals = false;
        if (this == o) {
        	areEquals = true;
        } else if (o instanceof Empleado) {
        	Empleado bean = (Empleado) o;
        	
        	areEquals = !(nombre != null ? !nombre.equals(bean.nombre) : bean.nombre != null) &&
		            !(iden != null ? !iden.equals(bean.iden) : bean.iden != null) &&
		            !(apellidos != null ? !apellidos.equals(bean.apellidos) : bean.apellidos != null);
        } else {
        	//Si no es siquiera una instacia de empleado es que no es igual.
        	areEquals = false;
        }
        return areEquals;
    }

    public int hashCode() {
        int result = iden != null ? iden.hashCode() : 0;
        result = 31 * result + (nombre != null ? nombre.hashCode() : 0);
        result = 31 * result + (apellidos != null ? apellidos.hashCode() : 0);
        
        return result;
    }

    @Override
    public String toString() {
        return "{" +
                "iden=" + iden +
                ", nombre='" + nombre + '\'' +
                ", apellidos='" + apellidos+ '\'' +
                '}';
    }
    
    @Override
    public Empleado clone() {
    	return new Empleado(this.getIden(), this.getNombre(), this.getApellidos());
    }

}
